<?php
use frontend\modules\yii2\widgets\layouts\markdown\Markdown;
/* @var $this \yii\web\View */
$this->title = 'Group模块组路由设置-urlManager组件-Components组件';
$this->registerMetaTag([
    'name' => 'keywords',
    'content' => 'yii,yii2,框架,应用组件,Components,使用,教程,urlManager,路由机制,group'
]);
$this->registerMetaTag([
    'name' => 'description',
    'content' => '由于Yii提供了模块，每个模块都应该是一个独立的功能块，在这个功能块中应该有许多路由需要配置，因此Yii提供了模块组路由配置法。'
]);

$html = [
    "概述" => <<<HTML
# Group模块组路由设置 
由于Yii提供了模块，每个模块都应该是一个独立的功能块，在这个功能块中会有许多路由需要配置，因此Yii提供了模块组路由配置法。

HTML,
    "config" => <<<HTML
## 配置举例 id=config
模块组管理路由需要`yii\web\GroupUrlRule`的支持：
```php
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\web\GroupUrlRule', 
            'prefix' => 'admin',
            'rules' => [
                'login' => 'user/login',
                'logout' => 'user/logout',
                'dashboard' => 'default/dashboard',
            ],
        ],
    ],
],
```
上述配置与如下配置等效：
```php
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'admin/login' => 'admin/user/login',
        'admin/logout' => 'admin/user/logout',
        'admin/dashboard' => 'admin/default/dashboard',
    ],
],
```
HTML,
    "prefix" => <<<HTML
## 前缀（prefix） id=prefix
在`GroupUrlRule`使用场景中，前缀一般会和模块名保持一致，因为在不使用`routePrefix`属性的情况下，`GroupUrlRule`会使用`Prefix`属性作为模块名进行路由映射，如下；
```php
'rules' => [
    [
        'class' => 'yii\web\GroupUrlRule', 
        'prefix' => 'admin',
        'rules' => [
            'login' => 'user/login',
        ],
    ],
],
```
在上面的配置中，我们只设置了`prefix`属性，没有设置`routePrefix`属性，因此`admin`也将作为模块名参与到路由的解析，解析后的路由如下：
```php
'rules' => [
    'admin/login' => 'admin/user/login',
],
```
HTML,
    "routePrefix" => <<<HTML
## 路由前缀（routePrefix） id=routePrefix
这个属性允许我们改变路由中的模块名，举例如下：
```php
'rules' => [
    [
        'class' => 'yii\web\GroupUrlRule', 
        'prefix' => 'admin',
        'routePrefix' => 'yii'
        'rules' => [
            'login' => 'user/login',
        ],
    ],
],
```
在上面的配置中，我们设置了`prefix`属性，也设置了`routePrefix`属性，因此`yii`会作为模块名参与到路由的解析，解析后的路由如下：
```php
'rules' => [
    'admin/login' => 'yii/user/login',
],
HTML,
    "" => <<<HTML

HTML,
];

echo Markdown::widget(["content" => implode("\n", $html)]);

